#ifndef __OBSERVEDOBJECT_H
#define __OBSERVEDOBJECT_H

#include "Observer.hpp"
#include <list>

using namespace std;

template <class T> class Observer;

template <class T> class ObservedObject
{
private:
    list<Observer<T> *> ObserverList;
    T _value;

public:
    ObservedObject(T);
    ~ObservedObject();
    T getValue();
    void setValue(const T);
    void addObserver(Observer<T> *);
    void notifyAllObserver();
};

#endif